home *** CD-ROM | disk | FTP | other *** search
/ Commodore Free 38 / Commodore_Free_Issue_38_2010_Commodore_Computer_Club.d64 / iv michael < prev    next >
Text File  |  2023-02-26  |  14KB  |  485 lines

  1.  
  2.  
  3.  
  4. *************************************
  5.    INTERVIEW WITH MICHAEL KIRCHER
  6.  Creator of Minigrafik and Minipaint
  7.       for the Commodore VIC-20
  8. *************************************
  9.  
  10. Q. Please introduce yourself to our
  11. readers
  12.  
  13. A. Hi, I'm Michael Kircher, 37 years
  14. old, and working as electrical
  15. engineer in Nuclear Fusion research.
  16. I'm posting as 'Mike' in the VIC-20
  17. Denial forum. When I don't use my
  18. spare time for programming, I enjoy
  19. swimming, cycling, photographing,
  20. construction of models, and playing
  21. a good game of chess.
  22.  
  23. Q. What is your first Memory of
  24. computers and Commodore?
  25.  
  26. A. I became interested in computers
  27. at quite an early age, when I could
  28. try out my uncle's ZX81 in the
  29. summer of 1982.
  30.  
  31. The most fascinating thing for me at
  32. that time was, that a TV set
  33. actually could display something
  34. different than the normal TV
  35. programme - something one could
  36. think out oneself. I had been
  37. tinkering around with electronic
  38. kits already for some time then,
  39. having built an AM transistor radio
  40. at the age of nine. I really didn't
  41. focus on Commodore until I got my
  42. first computer.
  43.  
  44. Q. What was the first Commodore
  45. Machine you owned, and did you
  46. progress through the C64 and onto
  47. the Amiga?
  48.  
  49. A. My first computer was a German
  50. Commodore VC20, as a Christmas
  51. present in '83. Even though it was
  52. considered as family computer at
  53. first, it was soon monopolised by
  54. me. Intrigued by those strange DATA
  55. statements full of numbers in BASIC
  56. type-in programs, I even wrote my
  57. first ML programs on the VIC until
  58. its PSU gave up mid '86. I already
  59. had a C=116 then, and later on, I
  60. had a C=128, which then was my main
  61. computing platform until early '91.
  62. I changed to Acorn, and bought an
  63. Archimedes A3000, which was followed
  64. by an A5000. So at least I could
  65. avoid the PC world for quite a long
  66. time.
  67.  
  68. During that episode, I taught myself
  69. ARM machine language, and C. This
  70. led me to vastly different methods
  71. of program design. Interestingly
  72. enough for me, I found many of these
  73. methods could be transferred back to
  74. the machine language of the 6502; if
  75. one was willing to throw some false
  76. suppositions over board. All in all,
  77. it was quite an interesting time
  78. then: together with a friend, I
  79. published some demos, and a disk
  80. magazine called 'Hardliner', under
  81. the handle/group name 'Architects'.
  82.  
  83. Even though, today there is nothing
  84. much more than the PC monopoly. One
  85. good thing about it, is that
  86. nowadays emulators, and
  87. cross-developing allow programs to
  88. be written for our first machines,
  89. that we simply couldn't do in former
  90. times without those tools at hand.
  91.  
  92. Over the time, one main interest for
  93. me always had been computer
  94. graphics. So, when emulators had
  95. matured enough, I thought what I
  96. could have achieved with the VIC,
  97. had its PSU not given up early?
  98.  
  99. Q. Can you tell our readers about
  100. the VIC-20 graphics extension
  101. MINIGRAFIK?
  102.  
  103. A. MINIGRAFIK is a compact tool for
  104. the VIC-20, that provides a high
  105. resolution graphics screen of
  106. 160x192 pixels with at least a +8K
  107. RAM extension being present. It
  108. features commands for changing
  109. between text, and graphic modes,
  110. pixel plots, line drawing, and it
  111. can save, and load the graphics
  112. screen. There is support to mix
  113. hires, and multi-colour graphics on
  114. the same screen, the latter which
  115. allows up to four colours being
  116. placed nearby on the screen, at the
  117. cost of resolution.
  118.  
  119. Q. So when and where did the idea
  120. for MINIGRAFIK come from?
  121.  
  122. A. A friend of mine gave me a tape
  123. with the original version of
  124. MINIGRAFIK in 1985. It had been
  125. published by a German computer
  126. magazine as type-in program. The
  127. original version had been written
  128. for an unexpanded, or +3K expanded
  129. VIC-20, and featured a 128x128 pixel
  130. screen. Line drawing, and graphics
  131. load/save commands were not
  132. included, but even so I wrote some
  133. programs for it, like function
  134. plotters, pie charts, and a simple
  135. joystick-driven graphics editor. The
  136. tape, and the extension later got
  137. lost in time.
  138.  
  139. I had subscribed to the Denial forum
  140. late 2004, and in 2006 there
  141. appeared a discussion thread about
  142. hires graphics in general, which
  143. gave me the incentive to reconstruct
  144. MINIGRAFIK, this time with a
  145. resolution of 160x192. Only the
  146. internal memory of the VIC-20 is
  147. accessible by the VIC chip, and I
  148. chose this resolution as it is the
  149. maximum one, which can be displayed
  150. without clobbering the lower 1K used
  151. by CBM BASIC, and KERNAL.
  152.  
  153. Besides the increased resolution,
  154. the added line draw, and load/save
  155. commands, I also included enhanced
  156. support for multi-colour graphics.
  157.  
  158. Q. Is the extension still evolving,
  159. for example are there still new
  160. features to implement?
  161.  
  162. A. As it stands, the current version
  163. of MINIGRAFIK already gives a good
  164. starting point for graphics oriented
  165. programs. Many graphics primitives
  166. can be coded with pixel plots, and
  167. line drawing alone. For example, I
  168. didn't include a BOX command, as
  169. that can simply be expressed as
  170. sub-routine with 4 line commands.
  171.  
  172. Some sensible candidates might be a
  173. colour selection command,
  174. circle/ellipse draw, flood fill, and
  175. text output. Even though, the
  176. usefulness of a dedicated colour
  177. selection command can be disputed,
  178. because it would only replace up to
  179. 3 POKEs for eye candy, but no other
  180. advantage. The other features will
  181. most probably be implemented as
  182. SYS-callable library routines in
  183. machine language, leaving the kernel
  184. of MINIGRAFIK untouched. Currently,
  185. a program using MINIGRAFIK can count
  186. on using nearly its whole code, so
  187. there is no baggage of unused parts
  188. of MINIGRAFIK around when it is
  189. loaded.
  190.  
  191. Q. Apart from the obvious VIC-20
  192. limitations like memory and screen
  193. resolution, what main problems did
  194. you face implementing MINIGRAFIK?
  195.  
  196. A. The main concern was, that
  197. MINIGRAFIK does not operate on its
  198. own, but acts as support library for
  199. user programs. That required a
  200. seamless integration into the BASIC
  201. interpreter. I also wanted the
  202. extension to work on both PAL, and
  203. NTSC TV systems. For this, the two
  204. versions of the VIC chip must be
  205. programmed in a different ways, an
  206. auto-detect routine takes care of
  207. that.
  208.  
  209. Q. Can you explain to our readers
  210. how to use the MINIGRAFIK extension
  211. from their own programs, for example
  212. can you use BASIC commands to use
  213. the features of MINIGRAFIK?
  214.  
  215. A. MINIGRAFIK installs itself as
  216. extension to CBM BASIC. The new
  217. commands, and functions are all
  218. prefaced by an '@' character. @ON,
  219. @CLR, @RETURN select graphics mode,
  220. clear the graphics screen, and
  221. return to text mode. @LOAD, and
  222. @SAVE access tape or disc to load,
  223. or save the graphics screen. '@' on
  224. its own specifies a pixel plot, or
  225. line drawing command, with a syntax
  226. similar to the DRAW command in BASIC
  227. 3.5 or 7.0. Finally, the @()
  228. function takes a co-ordinate pair as
  229. two parameters, and returns the
  230. pixel colour within a numeric
  231. expression.
  232.  
  233. I could have added additional
  234. tokenizing, and de-tokenizing
  235. routines to give the commands their
  236. own names. Still, the combination of
  237. a flagging character, and standard
  238. BASIC 2.0 tokens with fitting
  239. descriptions of the intended use
  240. seemed satisfactory to me.
  241.  
  242. The screen bitmap has a simple
  243. address function, so programs
  244. written in machine language have
  245. fast access.
  246.  
  247. Q. I presume the whole of MINIGRAFIK
  248. is implemented as machine code? How
  249. big is the code when loaded into
  250. memory?
  251.  
  252. A. Indeed MINIGRAFIK is 100% machine
  253. code, only 1K in size. Even though,
  254. the memory from addresses 4096 to
  255. 8191 is permanently allocated for
  256. graphics display while the extension
  257. is active. With the minimum required
  258. +8K RAM extension that means there
  259. is still 7K available for BASIC
  260. programs.
  261.  
  262. Q. Has MINIGRAFIK been used in any
  263. recent VIC-20 games?
  264.  
  265. A. It found use in 'VIC=toria Gold
  266. Edition', a strategic board game set
  267. in Ancient Rome, which Alessandro
  268. Ubiali, and I co-developed in late
  269. 2008. Some graphics for 'Realms of
  270. Quest III' by Ghislain de Blois were
  271. prepared off-line with
  272. MINIGRAFIK-enhanced conversion
  273. programs. A few weeks ago, the text
  274. adventure 'Island of Secrets' had
  275. been re-released with a new LOOK
  276. command to show screens of more than
  277. 30 locations in the game. And, while
  278. it might not strictly qualify as
  279. game in the usual sense, I've also
  280. written a LIFE simulator which uses
  281. MINIGRAFIK.
  282.  
  283. Q. When or where did the program
  284. MINIPAINT evolve from?
  285.  
  286. A. Really, MINIPAINT started out
  287. from the editor part of the LIFE
  288. simulator I just mentioned. To get
  289. the features of a full-fledged
  290. graphics editor, and for speed
  291. reasons, I had to translate many
  292. parts to machine language, but there
  293. is still a main part written in
  294. BASIC which interfaces that ML
  295. library to MINIGRAFIK.
  296.  
  297. I did the first drafts of MINIPAINT
  298. in 2008, the project then lay
  299. dormant for nearly one year until I
  300. picked it up again last year.
  301.  
  302. Q. What was the main idea of
  303. MINIPAINT?
  304.  
  305. A. MINIPAINT, at its heart, is a
  306. pixel-oriented graphics editor.
  307. Before I had written MINIPAINT, the
  308. two main methods of creating
  309. graphics were either using
  310. MINIGRAFIK itself to do "programmed"
  311. graphics, or import images from PCs
  312. or other sources, converting them
  313. into the format specified by the
  314. @LOAD, and @SAVE commands. One of
  315. these programs, PGM IMPORT, does a
  316. fairly good job of translating a
  317. 80x192 pixel 256 grey-scale level
  318. PGM file into a MINIGRAFIK
  319. multi-colour screen dithered to 13
  320. intensity levels.
  321.  
  322. Still, the VIC chip is capable of
  323. displaying really stunning pictures
  324. when a good graphician has complete
  325. control over the finest aspects of
  326. the displayed picture. This is, what
  327. MINIPAINT is designed for. Of course
  328. it can also be used to fix up
  329. conversions.
  330.  
  331. Q. I see you have an example piece
  332. of art work "Tutankhamun", can you
  333. take our readers through the process
  334. to draw this on the VIC with
  335. MINIPAINT?
  336.  
  337. A. I used a cropped photo of the
  338. mask of King Tut, and a variant of
  339. PGM IMPORT to produce a first
  340. workstage in the colours blue,
  341. orange, light orange, and white.
  342. Since I had selected white as
  343. foreground colour, I could add
  344. shades in black as another
  345. foreground colour within MINIPAINT.
  346. Another small part, the snake at the
  347. top, was repainted in cyan colour as
  348. well.
  349.  
  350. It was mainly a matter of luck I had
  351. no problems with attribute clashes
  352. of the foreground colour with this
  353. picture, and so it turned out quite
  354. well.
  355.  
  356. Q. How long did the picture take to
  357. complete?
  358.  
  359. A. The preparation on the PC, and
  360. the conversion maybe took 15
  361. minutes. Adding the black shades
  362. incurred the longest part of
  363. completing the picture, roughly 2
  364. 1/2 hours.
  365.  
  366. Q. Can MINIPAINT drawings be used in
  367. user programs or called as
  368. standalone PRG files for demos, etc.?
  369.  
  370. A. Since MINIPAINT, and MINIGRAFIK
  371. share the same picture format - the
  372. save/load function in MINIPAINT is
  373. implemented with MINIGRAFIK commands
  374. - the pictures can simply be loaded,
  375. and displayed by your own programs
  376. with the @LOAD command. The picture
  377. files themselves are actually
  378. executable PRG files. That means,
  379. even if one does not currently have
  380. MINIGRAFIK, or MINIPAINT available,
  381. that picture can be displayed by
  382. LOADing it ',8' (*not* ',8,1'!), and
  383. then typing RUN.
  384.  
  385. Q. Are both applications well
  386. documented with user guides and
  387. examples?
  388.  
  389. A. MINIGRAFIK is still being
  390. discussed in the thread in Denial
  391. about hires graphics. I had posted
  392. quite some example programs there
  393. over time, many of which are now
  394. also hosted on my SkyDrive account.
  395.  
  396. MINIPAINT features a small, but
  397. handy on-line help system, which is
  398. invoked by pressing the '?' key.
  399.  
  400. For both programs I am currently
  401. preparing a comprehensive manual,
  402. which includes a tutorial for
  403. MINIPAINT, example programs, and
  404. utilities using MINIGRAFIK, and
  405. additional documentation for those
  406. who want to access the hires screen
  407. from machine language.
  408.  
  409. Q. Have you had much feedback from
  410. users of the applications?
  411.  
  412. A. There has been quite some
  413. feedback, mostly by Denial fellows.
  414. While I did the design, and coding
  415. of MINIGRAFIK all by myself, for
  416. MINIPAINT I got some very important
  417. feedback during development from
  418. Shane Fell, and Vanja Utne.
  419.  
  420. MINIPAINT wouldn't be the program it
  421. is now without their suggestions.
  422.  
  423. Q. Have you had any thoughts about
  424. other applications that will utilise
  425. the MINIGRAFIK add-on for the VIC?
  426.  
  427. A. The hires screen can be used to
  428. "host" output from a 40 column
  429. emulator. Even though there are some
  430. of these programs around, like
  431. FAT-40, they all suffer from a
  432. sluggish output. This is mainly
  433. because they replicate the whole
  434. BASIC editor functionality within
  435. themselves - there's not much room
  436. to optimize things, when the API
  437. focuses on single character output.
  438.  
  439. Text output on a bitmapped screen is
  440. heavily sped up when a routine that
  441. can print complete lines at a time.
  442. Such a routine already has been used
  443. for the dialogue boxes in MINIPAINT.
  444. These ideas might end up in a 40
  445. column text editor. Together with an
  446. assembler, it might even be possible
  447. to produce a new kind of programming
  448. environment for the VIC-20.
  449.  
  450. Q. What 3 things would you change
  451. about the VIC-20 if you were able to
  452. go back in time and help redesign
  453. the machine?
  454.  
  455. - The 3K RAM between 1024 to 4095
  456.   should have been populated as well.
  457.   That would have allowed to locate
  458.   the screen at 1024, not only
  459.   increasing the amount of accessible
  460.   RAM for the VIC chip, but there
  461.   would also never have been any
  462.   problems because of a relocating
  463.   text screen with bigger RAM
  464.   extensions.
  465.  
  466. - Nice would have been an error-free
  467.   shift register in the VIA chip.
  468.   That would have given us fast
  469.   floppies right from the start,
  470.   without the necessity for the CBM
  471.   developers to re-implement the IEC
  472.   protocol bit-banging style in
  473.   software.
  474.  
  475. - Separate luma, and chroma, instead
  476.   of composite video output.
  477.  
  478. These features would have kept the
  479. essence of the VIC-20. And for any
  480. other enhancements regarding
  481. graphics, sound, and memory, there's
  482. still the C=64 around. ;)
  483.  
  484. ==================================
  485.